const express = require('express');
const svgCaptCha = require('svg-captcha');
const boom = require('boom');
const router = express.Router();
/*
处理文件上传的路由
说明：post请求
数据类型：form-data
请求体：{'image':'图片.png'}
 */
const multer = require('multer')
const path = require('path')
const fs = require('fs')
    //上传图片的接口及相关操作
    //__dirname表示当前文件所在的根路径，也就是/routers，然后..表示向上退一级，也就是到了项目根目录，然后public/upload表示到了这个目录
const dirPath = path.join(__dirname, '..', 'public/upload')
const storage = multer.diskStorage({
    // 定义保存到那个目录, //string时,服务启动将会自动创建文件夹
    destination: function(req, file, cb) { //函数需手动创建文件夹
        // console.log('destination()', file)
        if (!fs.existsSync(dirPath)) { //如果这个目录不存在，就创建一个这样的目录
            fs.mkdir(dirPath, function(err) {
                if (err) {
                    console.log(err)
                } else {
                    cb(null, dirPath)
                }
            })
        } else {
            cb(null, dirPath)
        }
    },
    filename: function(req, file, cb) {
        // console.log('filename()', file)
        var ext = path.extname(file.originalname)
        cb(null, file.fieldname + '-' + Date.now() + ext)
    }
})
const upload = multer({
    storage
})
const uploadSingle = upload.single('image')
router.post('/img/upload', (req, res) => {
    uploadSingle(req, res, function(err) { //错误处理
        if (err) {
            return res.json({
                status: 400,
                msg: '上传文件失败'
            })
        }
        const file = req.file
        console.log(file)
        res.json({
            status: 200,
            data: {
                name: file.filename,
                url: 'http://localhost:8088/upload/' + file.filename
            },
            msg: '上传图片成功'
        })

    })
})


// 生成验证码
router.get('/getCodeImg', (req, res, next) => {
    let codeConfig = {
        mathMin: 1,
        mathMax: 20,
        mathOperator: '+',
        noise: 5,
        width: 100,
        height: 40,
        color: true,
        background: '#cc9966'
    };
    let captcha = svgCaptCha.createMathExpr(codeConfig);
    res.end(captcha.data);
})

module.exports = router